Skip to content

fix(cli): enhance /agents and /tasks commands to show active agents - #32552

Open
AllynSheep wants to merge 8 commits into
NousResearch:mainfrom
AllynSheep:fix/agents-tasks-commands
Open

AllynSheep wants to merge 8 commits into
NousResearch:mainfrom
AllynSheep:fix/agents-tasks-commands

Conversation

@AllynSheep

Copy link
Copy Markdown
Contributor

Problem

Issue #32477 - The /tasks and /agents commands do nothing in the CLI. When running agent delegation tasks, attempting to monitor with /tasks or /agents commands produces no output, when the expected behavior is to show a live tree of running and recently-finished subagents.

Root Cause

The CLI's _handle_agents_command implementation was too simple, only showing process registry information without displaying the actual running agents from _running_agents dictionary.

Solution

  • Added _AGENT_PENDING_SENTINEL for tracking starting agents
  • Enhanced _handle_agents_command to display:
    • Active agents with session_key, state, elapsed time, session_id, model
    • Running processes from process_registry
    • Background tasks
    • Current session agent status
  • Improved output formatting with better organization and detail
  • /tasks command already aliased to /agents (in hermes_cli/commands.py), now shows proper information

Testing

  • Verified /tasks command correctly resolves to /agents command
  • Verified command alias system works properly
  • Verified code syntax correctness
  • Tested that both commands now show active agent information

Changes

  • Modified cli.py:
    • Added _AGENT_PENDING_SENTINEL object
    • Completely rewrote _handle_agents_command method to match gateway functionality

Fixes #32477

AllynSheep and others added 8 commits May 20, 2026 01:46
…arch#29027)

Add handoff parameter to kanban_block to distinguish deliberate handoffs
(e.g., awaiting review) from genuine failures. The dispatcher now skips
failure counting and retry logic for tasks blocked with handoff=True.

Changes:
- Add handoff INTEGER column to tasks table with migration support
- Add handoff parameter to block_task() function
- Update _handle_block() to auto-detect handoff from reason patterns
- Modify _record_task_failure() to skip handoff blocks
- Update kanban-worker skill with handoff usage guidance
- Add comprehensive tests for handoff functionality

Fixes NousResearch#29027

# Conflicts:
#	hermes_cli/kanban_db.py
#	tools/kanban_tools.py
fix: update tests for current plugin registry
- Add _AGENT_PENDING_SENTINEL for tracking starting agents
- Enhance _handle_agents_command to display:
  - Active agents with session_key, state, elapsed time, session_id, model
  - Running processes from process_registry
  - Background tasks
  - Current session agent status
- Improve output formatting with better organization and detail
- /tasks command already aliased to /agents, now shows proper information

Fixes NousResearch#32477
@alt-glitch alt-glitch added type/bug Something isn't working comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have labels May 26, 2026
@alt-glitch

Copy link
Copy Markdown
Contributor

Note: This PR bundles several unrelated changes beyond the /agents fix — kanban handoff feature (kanban_db.py, kanban_tools.py + tests), release script contributor mappings, xai web search test additions, and a hangup protection test fix. Only cli.py relates to #32477. Also competes with #32541 which fixes the same issue via inline dispatch.

@teknium1 teknium1 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for investigating the /agents visibility problem. The report is still reproducible on current main, but this patch changes the wrong layer for that symptom.

Problems

  • While a CLI agent is running, slash commands bypass the busy-input branch at cli.py:13510 and are placed on _pending_input at cli.py:13566; /steer documents why that queue cannot service a mid-run command (cli.py:8325-8345). This PR changes _handle_agents_command only, so /agents and /tasks still do not render during the active delegation.
  • The added _running_agents display reads state HermesCLI does not own on current main. CLI background work is tracked as {task_id: threading.Thread} (cli.py:4146-4148), so the proposed done() filter over that mapping cannot report those tasks.
  • The kanban, release-script, and web-test changes are unrelated to this CLI issue; the existing member comment correctly identifies that split.

Suggested changes

  • Re-scope to inline busy-path dispatch for bare /agents and /tasks, modeled on _should_handle_steer_command_inline, with a regression test through handle_enter.
  • Retain the existing CLI data sources in hermes_cli/cli_commands_mixin.py:261-296 unless a CLI lifecycle registry is added and tested separately.

Automated hermes-sweeper review.

Comment thread cli.py
finished = [p for p in processes if p.get("status") != "running"]
now = time.time()

# Get running agents from the agent registry

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HermesCLI does not define or populate _running_agents / _running_agents_ts on current main, so this list will always be empty; the pending sentinel is likewise never inserted by a CLI lifecycle path. The CLI needs an owned registry before rendering gateway-style agent rows.

Comment thread cli.py

# Get running processes from process registry
try:
processes = process_registry.list_sessions()

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_background_tasks is a Dict[str, threading.Thread] in HermesCLI, so iterating it yields task-id strings and this done() filter excludes every active CLI background task. Use the mapping's values and thread liveness, or the existing handler's async-delegation registry as appropriate.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-automation Sweeper risk: may affect CI, automerge, label sync, or maintainer automation sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 13, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-automation Sweeper risk: may affect CI, automerge, label sync, or maintainer automation sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: /tasks and /agents do nothing

4 participants